
//varying vec4 point;
varying float id;

//uniform float ang_x;
//uniform float ang_y;

//const float ang_x = 180.0;
//const float ang_y = 0.0;

//const float PI = 3.1416;

void main() {
    //gl_FrontColor = gl_Color;

    gl_Position = gl_ModelViewProjectionMatrix * vec4(gl_Vertex.xyz, 1.0);    
    id = gl_Vertex.w;
    
    // @TODO rotacionar o eye antes de entrar no shader
    // @TODO ou depois, tanto faz (passa por uniform ou nao)
    // @TODO back face culling
//    float angx = ang_x * PI / 180.0;
//    float angy = ang_y * PI / 180.0;
//    
//    mat4 rot_x = mat4(1.0,        0.0,       0.0, 0.0,
//                      0.0,  cos(angx), sin(angx), 0.0,
//                      0.0, -sin(angx), cos(angx), 0.0,
//                     0.0,        0.0,       0.0, 1.0);
//                
//    mat4 rot_y = mat4(cos(angy), 0.0, -sin(angy), 0.0,
//                            0.0, 1.0,        0.0, 0.0,
//                      sin(angy), 0.0,  cos(angy), 0.0,
//                            0.0, 0.0,        0.0, 1.0);
//   
//    vec4 eye = rot_y * rot_x * vec4(0.0, 0.0, 1.0, 1.0);
//    //eye = vec4(0.0, 0.0, 100.0, 0.0);
//    //vec3 e = (gl_ModelViewProjectionMatrixInverse * eye).xyz;
//
//    //if ( (back_face_culling == 1) && (dot(normalize(gl_Vertex.xyz - eye), gl_Normal) < 0.0 )) {
//    if (dot(normalize(eye - gl_Vertex.xyz), normalize(gl_Normal)) < 0.0 ) {
//        id = -1.0;
//        // for some reason seting the vector to vec4(0.0) drops
//        // the performance significantly, at least on the GeForce8800 -- RM 2007-10-19
//        gl_Position = vec4(0.5, 0.5, 0.5, 1.0);
//    } else {
//        // only rotate point and normal if not culled
//        vec4 v = gl_ModelViewProjectionMatrix * vec4(gl_Vertex.xyz, 1.0);
//        id = gl_Vertex.w;
//        gl_Position = v;
//    }
} 
